import React, { useEffect } from "react"; import { useRouter } from "next/router"; import { useQueryParams, StringParam } from "use-query-params"; import TracesTable from "@/src/components/table/use-cases/traces"; import Page from "@/src/components/layouts/page"; import { api } from "@/src/utils/api"; import { TracesOnboarding } from "@/src/components/onboarding/TracesOnboarding"; import { getTracingTabs, TRACING_TABS, } from "@/src/features/navigation/utils/tracing-tabs"; import { useV4Beta } from "@/src/features/events/hooks/useV4Beta"; import ObservationsEventsTable from "@/src/features/events/components/EventsTable"; export default function Traces() { const router = useRouter(); const projectId = router.query.projectId as string; const { isBetaEnabled } = useV4Beta(); const [, setQueryParams] = useQueryParams({ viewMode: StringParam }); // Clear viewMode query when beta is turned off (e.g. from sidebar) useEffect(() => { if (!isBetaEnabled) { setQueryParams({ viewMode: undefined }); } }, [isBetaEnabled, setQueryParams]); // Check if the user has tracing configured const { data: hasTracingConfigured, isLoading } = api.traces.hasTracingConfigured.useQuery( { projectId }, { enabled: !!projectId, trpc: { context: { skipBatch: true, }, }, refetchInterval: 10_000, }, ); const showOnboarding = !isLoading && !hasTracingConfigured; if (showOnboarding) { return ( ); } return ( {isBetaEnabled ? ( ) : ( )} ); }